Integrated circuits have become a necessary part of everyday modern society. From cell phones and computers, to household appliances and automobiles, a wide range of integrated circuits are utilized to provide a broad range of functionality. To provide this functionality, integrated circuits may need to be specialized to have the functions necessary to achieve the desired results. Additionally, more and more functions are being included within each integrated circuit.
However, this has resulted in a level of design complexity previously unimagined. For example, to achieve the functions desired, multiple vendors may be used to provide Electronic Design Automation (EDA) software tools. The variety of such tools is supplied from a plurality of sources; this results in compatibility and management issues.
Further, to provide the desired product range, differing projects may require different methodologies. For instance, cost issues, the number of features to be included, and performance considerations all dictate the parameters desired in a chip by a consumer. Designing complex chips has become so ubiquitous and so pervasive that the provision of a “one size fits all” IC is unlikely as the functions desired in implementations continue to expand.
Moreover EDA tool vendors are often “behind the curve” in the development of the tools needed to perform current designs. EDA tool designers need to receive feedback from users of the tools in order to correct and improve the tool designs. For instance, due to the nature of efficient tool design, a new EDA tool is typically built, and then utilized over several feedback cycles. By the time the tool matures, designers and other elements of the process may be a generation further along, and therefore require new EDA tools, which are just entering the feedback cycle.
The level of detail involved with the integrated circuit design process may further complicate a designer's tasks. Previously, to even begin addressing the level of complexity encountered, problems were broken down into sub-problems and tools and procedures were designed to address each sub-problem. However, existing tools were often unable to address problems encountered between fixes, and hastily-written tools were prepared to “patch” the problems. The result has been an exploding collection of software tools, tool interfaces and procedures from various sources, each striving to cope with an ever-changing requirements landscape stemming from design projects of exponentially increasing complexity.
Therefore, it is desirable to produce a comprehensive system that manages design flows and procedures, as well as the computers and software required to implement the flows and procedures.